# 构建阶段
# 修改为使用阿里云镜像加速
FROM golang:1.24-alpine AS builder
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories

# 配置Go代理以加速模块下载
ENV GOPROXY=https://goproxy.cn,direct
ENV GOSUMDB=off

# 安装编译依赖
RUN apk add --no-cache git ca-certificates tzdata

# 设置工作目录
WORKDIR /app

# 复制项目文件
COPY . .

# 预下载依赖（加速后续构建）
RUN go mod download

# 判断程序是否可以运行
RUN go run ddns.go -h

# 静态编译参数（关键修改点）
RUN GOOS=linux go build -a \
    -tags osusergo,netgo \
    -o ddns-go ddns.go

# 最终运行阶段（使用alpine镜像）
FROM alpine:latest

# 从构建阶段复制必要文件
COPY --from=builder /app/ddns-go /
COPY --from=builder /app/demo_confi.toml /opt/apps/com.liumou.ddns-tencent/config.toml
COPY --from=builder /usr/share/zoneinfo /usr/share/zoneinfo
COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/
# 定义Docker镜像的元数据标签，用于标识镜像的版本信息
LABEL VERSION="3.2.7"
LABEL Author="liumou_site"
LABEL Description="ddns-go"
LABEL UpdateTime="2025-5-5 03:00:52"
LABEL Log="当检测到IP获取异常的时候,选择返回本次循环,而非终止程序"

# 定义Docker镜像的元数据标签，用于标识项目的主页地址
LABEL HomePage=https://gitee.com/liumou_site/ddns-go

# 设置环境变量sec，表示某个时间间隔或周期，单位为秒
ENV sec=60

# 设置环境变量UrlIp6Api，表示用于获取IPv6地址的API接口地址
ENV UrlIp6Api=http://ipv6.liumou.site:22011/api

# 设置环境变量(当设置变量的时候,将优先使用环境变量,配置文件次之)
# TXY_KEY: 腾讯云的API密钥，用于访问腾讯云服务。
# TXY_ID: 腾讯云的账户ID，用于标识用户身份。
ENV TXY_KEY=""
ENV TXY_ID=""
# 设置域名信息
ENV DOMAIN=""
ENV Sub4=""
ENV Sub6=""
ENV Remark=""
ENV Type=""
# 当解析类型不一致时,是否删除解析记录再添加解析记录以确保唯一解析记录
ENV Delete=false
ENV debug=true


# 设置环境变量
ENV TZ=Asia/Shanghai

# 声明挂载点
VOLUME /opt/apps/com.liumou.ddns-tencent

# 暴露web服务端口
EXPOSE 8080

# 容器入口
ENTRYPOINT ["/ddns-go"]

# 默认运行参数（启用web界面）
CMD ["-web", "-port", "8080", "-c", "/opt/apps/com.liumou.ddns-tencent/ddns.toml"]
